1 CLS:CLEAR:RESTORE:PRINT"DIANALOG-DIFFERENTIAL ANALYZER-solves Groups of Initial value,Non/linear,":PRINT"Simultaneous,Ordinary Differential Equations of any Order.":DEFDBL A-G,R-S,U-Z
3 PRINT"Test eqns in listing DIANEQNS.TXT may be MERGEd & appear below DIANALOG ,"
4 PRINT"or TYPE EQUATIONS ON LINES 10-20 at end of LISTING,highest order on left.":PRINT"eg: 10 X(1,2)=X(1,1)*X(2,0)+T .............. ":PRINT" 21 RETURN"
6 PRINT"To CHANGE CONSTANTS when RUNning,STOP,pull down SHOW COMMAND window,":PRINT"enter new values (eg type K(5)=3), CONTINUE.":PRINT"To CHANGE H in RUN,Press BREAK,NOTE ALL C(I,J) & RUN again from this latest":PRINT"position with new H."
7 PRINT"FOR checking,known analytical solutions can be typed on lines 430-459."
8 PRINT"Note optional ending conditions on line 390.":GOTO 30
10
21 RETURN
30 PRINT:INPUT "NUMBER OF EQUATIONS=";Q:INPUT "MAXIMUM ORDER=";E:INPUT "STARTING TIME (0?)To=";T:INPUT "TIME INCREMENT (.1?)H=";H
40 DIM M$(4),X(Q+4,E),O(Q),A(Q,E-1),B(Q,E-1),C(Q,E-1),E(Q,E-1),D(Q,E-1),K(9),F(Q,E-1),G(Q,E-1),M(Q+4),Y(Q+4),V(Q+4)
50 FOR J=1 TO Q:IF Q=1 THEN O(1)=E:GOTO 60
55 PRINT"MAXIMUM DIFFERENTIAL ORDER OF VARIABLE";J;"=";:INPUT O(J)
530 PSET((V+.5)*7+1,275):FOR J1=1 TO 8:FOR J2=1 TO 5:LINE-STEP(0,-7):LINE-STEP(3,0):LINE-STEP(-3,0):NEXT J2:LINE-STEP(3,0):LINE-STEP(-6,0):LINE-STEP(3,0):NEXT J1:RETURN:REM SETS VERTICAL AXIS.CHANGE IF NECESSARY.
590 FOR J=0 TO Q:V(J)=INT(V+M(J)*X(J,0)+Y(J)+.5):NEXT J:REM CAN PLOT OTHER VARIABLES
600 IF K=0 THEN K=1:M$(2)=M$(0):GOTO 620
610 M$(2)=M$(1)
620 IF(H>0 AND T>=0 AND K3=0) OR (L<0 AND T<=0 AND K3=0) THEN K3=1:K4=1
630 V$="+"
640 FOR J=0 TO Q:IF J=0 AND N0=10 THEN N0=0:GOTO 690
650 IF V(J)>W THEN V(J)=W:V$=">":GOTO 690
660 IF V(J)<0 THEN V(J)=0:V$="<":GOTO 690
670 IF J=0 THEN V$="l":GOTO 690
680 V$=CHR$(J+48):REM OR SELECT OTHER SYMBOLS.PRIORITY IS PROPORTIONAL TO J
710 NEXT J:PRINT M$(2):N0=N0+1:K4=0:RETURN:REM ->PRINTER
720 INPUT "XM,SCALE MULTIPLIER(+or-but not 0) =";XM:INPUT "XO,SCALE OFFSET (=0?)=";XO
730 INPUT "YM,SCALE MULTIPLIER(+or-but not 0) =";YM:INPUT "YO,SCALE OFFSET (=0?)=";YO:RETURN
740 VX=(V+.5+XO+XM*X(1,0))*7+1
745 REM CAN PUT TIME T OR DESIRED DIFFERENTIALS,VARIABLES,FUNCTIONS OF THEM OR AXES TRANSFORMS,INSTEAD OF X(1,0),X(2,0).CAN CHANGE SCALE FACTORS DURING RUN WITH BREAK,CONT.
750 VY=275-K6*10-(YO+YM*X(2,0))*7
755 IF VY>W2-60 AND N6=1 THEN LOCATE 18,1:K6=K6+2:K7=1:REM MOVES GRAPH UP WHEN VY IS BELOW SCREEN
760 IF N6=0 THEN N6=1:LOCATE 9,5:PRESET (VX,VY):X0=VX:Y0=VY:RETURN:REM STARTING ORIGIN,OFFSETS.
770 LINE (X0,Y0)-(VX,VY):X0=VX:Y0=VY:IF K7=1 THEN PRINT:PRINT:K7=0:Y0=VY-20:LOCATE 12,5:RETURN:ELSE RETURN:REM MAIN GRAPHING INCLUDING NEGATIVE Y OVERSHOOT